import { userQueries } from './database-prisma'
import { USER_COLOR_PALETTE, COLOR_NAMES, getColorName as getColorNameClient } from './colors-client'

// 重新导出客户端函数，保持API一致性
export { USER_COLOR_PALETTE, COLOR_NAMES }
export const getColorName = getColorNameClient

// 获取已使用的颜色（仅服务端）
export async function getUsedColors(): Promise<string[]> {
  try {
    const users = await userQueries.getAll.all() as any[]
    return users.map(user => user.color).filter(color => color)
  } catch (error) {
    console.error('获取已使用颜色失败:', error)
    return []
  }
}

// 获取下一个可用的颜色（仅服务端）
export async function getNextAvailableColor(): Promise<string> {
  const usedColors = await getUsedColors()
  
  // 找到第一个未使用的颜色
  for (const color of USER_COLOR_PALETTE) {
    if (!usedColors.includes(color)) {
      return color
    }
  }
  
  // 如果所有颜色都被使用了，随机选择一个
  // 或者生成一个随机颜色
  const randomIndex = Math.floor(Math.random() * USER_COLOR_PALETTE.length)
  return USER_COLOR_PALETTE[randomIndex]
}

// 生成随机颜色（备用方案）
export function generateRandomColor(): string {
  const hue = Math.floor(Math.random() * 360)
  const saturation = 60 + Math.floor(Math.random() * 30) // 60-90%
  const lightness = 50 + Math.floor(Math.random() * 20)  // 50-70%
  
  return `hsl(${hue}, ${saturation}%, ${lightness}%)`
}

// 获取用户颜色（主要函数，仅服务端）
export async function assignUserColor(): Promise<string> {
  const availableColor = await getNextAvailableColor()
  console.log('分配用户颜色:', availableColor)
  return availableColor
} 